One technology that supports messaging and queuing across a network is referred to as MQSeries and is offered by International Business Machines Corporation, Armonk, N.Y. With MQSeries, users can dramatically reduce application development time by using MQSeries API functions. Since MQSeries supports many platforms, MQSeries applications can be ported easily from one platform to another. In a network, two MQSeries systems communicate with each other via channels, such as MQSeries channels. An MQSeries sender channel defines a connection from one MQSeries system to another MQSeries system and transmits messages from the one system to the other system.
To facilitate transmission of messages from one system to another system, memory resident queues are used. In particular, messages are written to and retrieved from the queues. Messages put to a queue are guaranteed to be delivered to their final destination. That is, messages have persistence. It is also guaranteed that only a single copy of the message will be delivered. Also, messages are delivered in a time-independent, asynchronous manner. This is beneficial, since applications may continue processing regardless of the status of the underlying network.
In order to maintain persistence for MQSeries messages, the most common implementation for MQSeries hosts is to have each queue reside on direct access storage device (DASD) media. These queues are referred to as DASD resident queues. DASD resident queues provide a benefit of being easily movable between processors in a parallel complex. This is because they contain the complete up-to-date version of the queues to be moved with no intermediate steps necessary. However, DASD resident queues have proven inadequate in terms of performance. Thus, high performance, high access queues now reside in memory, and are referred to as memory resident queues.
Although memory resident queues have obvious performance improvements over DASD resident queues, difficulties arise when a processor housing a memory resident queue becomes inactive. In this situation, the memory resident queue becomes inaccessible to other processors that may need the queue, until the inactive processor is brought back online. Thus, any messages stored on those queues cannot be delivered to their final destination in a timely manner.
Based on the foregoing, a need exists for a capability that enables an active processor to take over a queue for an inactive processor. A further need exists for a capability that enables an active processor to reconstruct a memory resident queue for an inactive processor.